package com.manong.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.manong.aspect.AutoFill;
import com.manong.entity.Order;
import com.manong.entity.Sup;
import com.manong.service.SupService;
import com.manong.utils.Result;
import com.manong.vo.query.SupVo;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("/api/sup")
public class SupController {

    @Resource
    private SupService supService;

    /**
     * 查询供应商列表
     * @param supVo
     * @return
     */
    @GetMapping("/list")
    public Result list(SupVo supVo){
        IPage<Sup> page = new Page<Sup>();
        page.setCurrent(supVo.getPageNo());
        page.setSize(supVo.getPageSize());
        supService.findSupListByUsername(page,supVo);
        return Result.ok(page);
    }

    /**
     * 新增供应商
     * @param sup
     * @return
     */
    @AutoFill(menu = "供应商管理", type = "添加")
    @PostMapping("/add")
    @PreAuthorize("hasAuthority('sys:sup:add')")
    public Result add(@RequestBody Sup sup){
        if(supService.save(sup)){
            return Result.ok().message("添加成功");
        }else{
            return Result.error().message("添加失败");
        }
    }

    @AutoFill(menu = "供应商管理", type = "修改")
    @PutMapping("/update")
    @PreAuthorize("hasAuthority('sys:sup:edit')")
    public Result update(@RequestBody Sup sup){
        //调用修改方法
        if(supService.updateById(sup)){
            return Result.ok().message("修改成功");
        }
        //返回数据
        return Result.error().message("修改失败");
    }

    @AutoFill(menu = "供应商管理", type = "删除")
    @DeleteMapping("/delete/{id}")
    @PreAuthorize("hasAuthority('sys:sup:delete')")
    public Result delete(@PathVariable Long id){
        if(supService.deleteById(id)){
            return Result.ok().message("删除成功");
        }else{
            return Result.error().message("删除失败");
        }
    }

    // 获取部门列表（用于下拉框）
    @GetMapping("/listAll")
    public Result getAllDepartments() {
        List<Sup> list = supService.list();
        return Result.ok(list);
    }
}
